EC-CUBE 2.11.4
[ class tree: EC-CUBE 2.11.4 ] [ index: EC-CUBE 2.11.4 ] [ all elements ]

Source for file SC_Display.php

Documentation is available at SC_Display.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. /**
  25.  * Http コンテンツ出力を制御するクラス.
  26.  *
  27.  * @author Ryuichi Tokugami
  28.  * @version $Id: SC_Display.php 20970 2011-06-10 10:27:24Z Seasoft $
  29.  */
  30. class SC_Display{
  31.  
  32.     var $response;
  33.  
  34.     var $device;
  35.  
  36.     /** SC_View インスタンス */
  37.     var $view;
  38.  
  39.     var $deviceSeted = false;
  40.  
  41.     /*
  42.      * TODO php4を捨てたときに ここのコメントアウトを外してね。
  43.      * const('MOBILE',1);
  44.      * const('SMARTPHONE',2);
  45.      * const('PC',10);
  46.      * const('ADMIN',99);
  47.      */
  48.  
  49.     function SC_Display($hasPrevURL true{
  50.         $this->response = new SC_Response_Ex();
  51.         if ($hasPrevURL{
  52.             $this->setPrevURL();
  53.         }
  54.     }
  55.  
  56.     function setPrevURL(){
  57.         // TODO SC_SiteSession で実装した方が良さげ
  58.         $objCartSess new SC_CartSession_Ex();
  59.         $objCartSess->setPrevURL($_SERVER['REQUEST_URI']);
  60.     }
  61.  
  62.     /**
  63.      * LC_Page のパラメーターを, テンプレートに設定し, 出力の準備を行う.
  64.      *
  65.      * @param LC_Page $page LC_Page インスタンス
  66.      * @param $is_admin boolean 管理画面を扱う場合 true
  67.      */
  68.     function prepare($page$is_admin false){
  69.         if(!$this->deviceSeted || !is_null($this->view)){
  70.             $device ($is_adminDEVICE_TYPE_ADMIN $this->detectDevice();
  71.             $this->setDevice($device);
  72.         }
  73.         $this->assignobj($page);
  74.         $this->response->setResposeBody($this->view->getResponse($page->getTemplate()));
  75.     }
  76.  
  77.     /**
  78.      * リロードを行う.
  79.      *
  80.      * SC_Response::reload() のラッパーです.
  81.      */
  82.     function reload($queryString array()$removeQueryString false){
  83.         $this->response->reload($queryString$removeQueryString);
  84.     }
  85.  
  86.     function noAction(){
  87.         return;
  88.     }
  89.  
  90.     /**
  91.      * ヘッダを追加する.
  92.      */
  93.     function addHeader($name$value){
  94.         $this->response->addHeader($name$value);
  95.     }
  96.  
  97.     /**
  98.      * デバイス毎の出力方法を自動で変更する、ファサード
  99.      * Enter description here ...
  100.      */
  101.     function setDevice($device DEVICE_TYPE_PC){
  102.  
  103.         switch ($device){
  104.             case DEVICE_TYPE_MOBILE:
  105.                 $this->response->setContentType("text/html");
  106.                 $this->setView(new SC_MobileView_Ex());
  107.                 break;
  108.             case DEVICE_TYPE_SMARTPHONE:
  109.                 $this->setView(new SC_SmartphoneView_Ex());
  110.                 break;
  111.             case DEVICE_TYPE_PC:
  112.                 $this->setView(new SC_SiteView_Ex());
  113.                 break;
  114.             case DEVICE_TYPE_ADMIN:
  115.                 $this->setView(new SC_AdminView_Ex());
  116.         }
  117.         $this->deviceSeted = true;
  118.     }
  119.  
  120.     /**
  121.      * SC_View インスタンスを設定する.
  122.      */
  123.     function setView($view){
  124.         $this->view = $view;
  125.     }
  126.  
  127.     /**
  128.      * 機種を判別する。
  129.      *
  130.      * SC_Display::MOBILE = ガラケー = 1
  131.      * SC_Display::SMARTPHONE = スマホ = 2
  132.      * SC_Display::PC = PC = 10
  133.      *
  134.      * @static
  135.      * @return integer 端末種別ID
  136.      */
  137.     function detectDevice(){
  138.         $nu new Net_UserAgent_Mobile();
  139.         $su new SC_SmartphoneUserAgent_Ex();
  140.         $retDevice 0;
  141.         if ($nu->isMobile()) {
  142.             return DEVICE_TYPE_MOBILE;
  143.         elseif ($su->isSmartphone()) {
  144.             return DEVICE_TYPE_SMARTPHONE;
  145.         else {
  146.             return DEVICE_TYPE_PC;
  147.         }
  148.     }
  149.  
  150.     function assign($val1,$val2){
  151.         $this->view->assign($val1$val2);
  152.     }
  153.  
  154.     function assignobj($obj){
  155.         $this->view->assignobj($obj);
  156.     }
  157.  
  158.     function assignarray($array){
  159.         $this->view->assignarray($array);
  160.     }
  161. }

Documentation generated on Fri, 24 Feb 2012 14:02:32 +0900 by Seasoft